<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
</body>
    <script src="https://unpkg.com/vue@next"></script>
    <script>
        const myPlugin = {  //myPlugin插件  ===> 声明变量
            //第一个参数是 Vue 实例，第二个是要传递的参数，第三个......
            install(app,options){
                console.log(app,options,param2)   //打印  app   options
                //provide可以早任何组件中指定我们想要提供给后代组件的数据或方法
                //而在任何后代组件中
                //需要与         配套使用
                app.provide('name','hello provide')
                app.directive('focus',{
                    mounted(el){  //当被绑定的元素挂载到DOM中
                        el.focus();//聚焦函数
                    },
                }),
                app.mixin({
                    mounted() {
                        console.log(' I am plugin mixin ')
                    },
                })
            }

        }
        const app = Vue.createApp({
            
                template:`
                <div>hello</div>
                <input value ="hello" />
                <input v-focus />
                `,
                inject: ['name'],
            })
            app.component('component-demo',{
                template:`
                <div>hello Vue.js</div>
                `
            })
            //插件的用法
            app.use(myPlugin,'a','b')

            const cm = app.mount("#app");
    </script>
</html>